home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / x / volume11 / tgif / patch6.02 next >
Encoding:
Internet Message Format  |  1991-02-12  |  33.4 KB

  1. Path: uunet!zaphod.mps.ohio-state.edu!usc!apple!sun-barr!newstop!exodus!CS.UCLA.EDU
  2. From: william@CS.UCLA.EDU (William Cheng)
  3. Newsgroups: comp.sources.x
  4. Subject: v11i064: tgif, Patch6, Part02/06
  5. Message-ID: <7934@exodus.Eng.Sun.COM>
  6. Date: 13 Feb 91 07:30:30 GMT
  7. References: <csx-11i063:tgif@uunet.UU.NET>
  8. Sender: news@exodus.Eng.Sun.COM
  9. Lines: 1165
  10. Approved: argv@sun.com
  11.  
  12. Submitted-by: william@CS.UCLA.EDU (William Cheng)
  13. Posting-number: Volume 11, Issue 64
  14. Archive-name: tgif/patch6.02
  15. Patch-To: Volume 7, Issue 56-76 (original: tgif-1.2)
  16. Patch-To: Volume 8, Issue 46-48 (Patch1: tgif-1.2 => tgif-1.9)
  17. Patch-To: Volume 8, Issue 58-60 (Patch2: tgif-1.9 => tgif-1.12)
  18. Patch-To: Volume 8, Issue 87-89 (Patch3: tgif-1.12 => tgif-1.13)
  19. Patch-To: Volume 8, Issue 94 (Patch4: tgif-1.13 => tgif-1.14)
  20. Patch-To: Volume 8, Issue 95 (Patch5: tgif-1.14 => tgif-1.15)
  21.  
  22. ---------------------------------> cut here <---------------------------------
  23. *** file.c.orig    Wed Dec 12 14:34:23 1990
  24. --- file.c    Wed Dec 12 14:34:30 1990
  25. ***************
  26. *** 6,10 ****
  27.   #ifndef lint
  28.   static char RCSid[] =
  29. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/file.c,v 1.32 90/08/15 16:00:43 william Exp $";
  30.   #endif
  31.   
  32. --- 6,10 ----
  33.   #ifndef lint
  34.   static char RCSid[] =
  35. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/file.c,v 1.43 90/11/10 13:51:37 william Exp $";
  36.   #endif
  37.   
  38. ***************
  39. *** 46,52 ****
  40.   #include "text.e"
  41.   
  42. ! #define CUR_VERSION 8
  43.   #define START_HAVING_ATTRS 8
  44.   
  45.   char    curFileName[MAXPATHLENGTH];
  46.   int    curFileDefined = FALSE;
  47. --- 46,54 ----
  48.   #include "text.e"
  49.   
  50. ! #define CUR_VERSION 9
  51.   #define START_HAVING_ATTRS 8
  52.   
  53. + extern char    * getenv ();
  54.   char    curFileName[MAXPATHLENGTH];
  55.   int    curFileDefined = FALSE;
  56. ***************
  57. *** 67,70 ****
  58. --- 69,73 ----
  59.      curFileName[0] = '\0';
  60.      curFileDefined = FALSE;
  61. +    *curSymDir = '\0';
  62.   }
  63.   
  64. ***************
  65. *** 104,108 ****
  66.         fprintf (FP, "%1d,%1d,%1d,%1d,", curSpline, lineStyle, objFill, penPat);
  67.         fprintf (FP, "%1d,%1d,%1d,%1d,", textJust, curFont, curStyle, curSize);
  68. !       fprintf (FP, "%1d).\n", curFontDPI);
  69.      }
  70.   
  71. --- 107,111 ----
  72.         fprintf (FP, "%1d,%1d,%1d,%1d,", curSpline, lineStyle, objFill, penPat);
  73.         fprintf (FP, "%1d,%1d,%1d,%1d,", textJust, curFont, curStyle, curSize);
  74. !       fprintf (FP, "%1d,%1d).\n", curFontDPI, curDash);
  75.      }
  76.   
  77. ***************
  78. *** 184,188 ****
  79.   {
  80.      char            new_file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  81. !    char            new_full_name[MAXPATHLENGTH];
  82.      FILE            * fp;
  83.      int            count = 0, len;
  84. --- 187,192 ----
  85.   {
  86.      char            new_file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  87. !    char            new_full_name[MAXPATHLENGTH], tmp_str[MAXPATHLENGTH];
  88. !    char            name_without_ext[MAXPATHLENGTH];
  89.      FILE            * fp;
  90.      int            count = 0, len;
  91. ***************
  92. *** 207,211 ****
  93. --- 211,223 ----
  94.               }
  95.               else if (strcmp (&new_file_name[len-4], ".obj") != 0)
  96. +             {
  97. +                strcpy (name_without_ext, new_file_name);
  98.                  strcat (new_file_name, ".obj");
  99. +             }
  100. +             else
  101. +             {
  102. +                strcpy (name_without_ext, new_file_name);
  103. +                name_without_ext[len-4] = '\0';
  104. +             }
  105.   
  106.               if (strlen (new_file_name) == 4)
  107. ***************
  108. *** 216,220 ****
  109. --- 228,235 ----
  110.            }
  111.            else
  112. +          {
  113. +             strcpy (name_without_ext, new_file_name);
  114.               strcat (new_file_name, ".obj");
  115. +          }
  116.            break;
  117.         case 1:
  118. ***************
  119. *** 227,231 ****
  120. --- 242,254 ----
  121.               }
  122.               else if (strcmp (&new_file_name[len-4], ".sym") != 0)
  123. +             {
  124. +                strcpy (name_without_ext, new_file_name);
  125.                  strcat (new_file_name, ".sym");
  126. +             }
  127. +             else
  128. +             {
  129. +                strcpy (name_without_ext, new_file_name);
  130. +                name_without_ext[len-4] = '\0';
  131. +             }
  132.   
  133.               if (strlen (new_file_name) == 4)
  134. ***************
  135. *** 236,240 ****
  136. --- 259,266 ----
  137.            }
  138.            else
  139. +          {
  140. +             strcpy (name_without_ext, new_file_name);
  141.               strcat (new_file_name, ".sym");
  142. +          }
  143.            break;
  144.         default:
  145. ***************
  146. *** 243,249 ****
  147.      }
  148.   
  149. !    strcpy (new_full_name, curDomainName);
  150. !    if (*curDomainName != '\0') strcat (new_full_name, "/");
  151. !    strcat (new_full_name, new_file_name);
  152.   
  153.      if (!OkayToCreateFile (new_full_name)) return;
  154. --- 269,276 ----
  155.      }
  156.   
  157. !    if (*new_file_name == '/')
  158. !       strcat (new_full_name, new_file_name);
  159. !    else
  160. !       sprintf (new_full_name, "%s/%s", curDir, new_file_name);
  161.   
  162.      if (!OkayToCreateFile (new_full_name)) return;
  163. ***************
  164. *** 256,266 ****
  165.      }
  166.   
  167. !    strcpy (curFileName, new_file_name);
  168.      curFileDefined = TRUE;
  169. !    sprintf (s, "Saving '%s' ...", new_file_name);
  170.      Msg (s);
  171.      Save (fp, botObj, 0);
  172.      fclose (fp);
  173. !    sprintf (s, "File '%s' saved.", new_file_name);
  174.      Msg (s);
  175.      SetFileModified (FALSE);
  176. --- 283,308 ----
  177.      }
  178.   
  179. !    strcpy (tmp_str, curDir);
  180. !    SetCurDir (new_full_name);
  181.      curFileDefined = TRUE;
  182. !    switch (count)
  183. !    {
  184. !       case 0:
  185. !          *curSymDir = '\0';
  186. !          if ((strcmp (tmp_str, curDir) != 0) || (!NameInCurDir (curFileName)))
  187. !             UpdateDirInfo ();
  188. !          break;
  189. !       case 1:
  190. !          strcpy (curSymDir, curDir);
  191. !          if (!DirInSymPath (curDir)) UpdateSymInfo ();
  192. !          break;
  193. !    }
  194. !    sprintf (s, "Saving '%s/%s' ...", curDir, curFileName);
  195.      Msg (s);
  196.      Save (fp, botObj, 0);
  197.      fclose (fp);
  198. !    sprintf (s, "File '%s/%s' saved.", curDir, curFileName);
  199.      Msg (s);
  200.      SetFileModified (FALSE);
  201. ***************
  202. *** 314,323 ****
  203.      }
  204.   
  205. !    strcpy (full_name, curDomainName);
  206. !    if (*curDomainName != '\0') strcat (full_name, "/");
  207. !    strcat (full_name, curFileName);
  208.      if ((fp = fopen (full_name, "w")) == NULL)
  209.      {
  210. !       sprintf (s, "Can not open %s, file not saved.", curFileName);
  211.         Msg (s);
  212.         return;
  213. --- 356,367 ----
  214.      }
  215.   
  216. !    if (strcmp (ext, "sym") == 0)
  217. !       sprintf (full_name, "%s/%s", curSymDir, curFileName);
  218. !    else if (strcmp (ext, "obj") == 0)
  219. !       sprintf (full_name, "%s/%s", curDir, curFileName);
  220.      if ((fp = fopen (full_name, "w")) == NULL)
  221.      {
  222. !       sprintf (s, "Can not open '%s', file not saved.", full_name);
  223.         Msg (s);
  224.         return;
  225. ***************
  226. *** 324,328 ****
  227.      }
  228.   
  229. !    sprintf (s, "Saving '%s' ...", curFileName);
  230.      Msg (s);
  231.   
  232. --- 368,372 ----
  233.      }
  234.   
  235. !    sprintf (s, "Saving '%s' ...", full_name);
  236.      Msg (s);
  237.   
  238. ***************
  239. *** 330,334 ****
  240.   
  241.      fclose (fp);
  242. !    sprintf (s, "File '%s' saved.", curFileName);
  243.      Msg (s);
  244.      SetFileModified (FALSE);
  245. --- 374,378 ----
  246.   
  247.      fclose (fp);
  248. !    sprintf (s, "File '%s' saved.", full_name);
  249.      Msg (s);
  250.      SetFileModified (FALSE);
  251. ***************
  252. *** 339,347 ****
  253.   {
  254.      register char    * s = Str, * l = Left;
  255.   
  256. !    while (*s != '\0' && *s != C) *l++ = *s++;
  257.   
  258.      if (*s == C) s++;
  259.      *l = '\0';
  260.      return (s);
  261.   }
  262. --- 383,403 ----
  263.   {
  264.      register char    * s = Str, * l = Left;
  265. +    register int        len = 0;
  266.   
  267. !    while (*s != '\0' && *s != C)
  268. !    {
  269. !       *l++ = *s++;
  270. !       len++;
  271. !    }
  272.   
  273.      if (*s == C) s++;
  274.      *l = '\0';
  275. +    while (len >= 2 && *Left == '\'' && *(l-1) == '\'')
  276. +    {
  277. +       *(--l) = '\0';
  278. +       strcpy (Left, &Left[1]);
  279. +       len -= 2;
  280. +    }
  281.      return (s);
  282.   }
  283. ***************
  284. *** 402,405 ****
  285. --- 458,462 ----
  286.                  curSpline = LT_STRAIGHT;
  287.               curFontDPI = FONT_DPI_75;
  288. +             curDash = 0;
  289.            }
  290.            else if (fileVersion <= 7)
  291. ***************
  292. *** 412,417 ****
  293.                     &curStyle, &curSize);
  294.               curFontDPI = FONT_DPI_75;
  295.            }
  296. !          else
  297.            {
  298.               sscanf (s, "%d , %d , %d , %d , %d , %d , %d , %d , %d , \
  299. --- 469,475 ----
  300.                     &curStyle, &curSize);
  301.               curFontDPI = FONT_DPI_75;
  302. +             curDash = 0;
  303.            }
  304. !          else if (fileVersion <= 8)
  305.            {
  306.               sscanf (s, "%d , %d , %d , %d , %d , %d , %d , %d , %d , \
  307. ***************
  308. *** 421,428 ****
  309.                     &lineStyle, &objFill, &penPat, &textJust, &curFont,
  310.                     &curStyle, &curSize, &curFontDPI);
  311.            }
  312.            if (colorIndex >= maxColors)
  313.            {
  314. !             printf ("Can not find color `%s', use `%s' instead.\n", s,
  315.                     colorMenuItems[defaultColorIndex]);
  316.               colorIndex = defaultColorIndex;
  317. --- 479,496 ----
  318.                     &lineStyle, &objFill, &penPat, &textJust, &curFont,
  319.                     &curStyle, &curSize, &curFontDPI);
  320. +             curDash = 0;
  321.            }
  322. +          else
  323. +          {
  324. +             sscanf (s, "%d , %d , %d , %d , %d , %d , %d , %d , %d , \
  325. +                   %d , %d , %d , %d , %d , %d , %d , %d , %d , %d",
  326. +                   &drawOrigX, &drawOrigY, &zoomScale, &xyGrid, &gridOn,
  327. +                   &colorIndex, &horiAlign, &vertAlign, &lineWidth, &curSpline,
  328. +                   &lineStyle, &objFill, &penPat, &textJust, &curFont,
  329. +                   &curStyle, &curSize, &curFontDPI, &curDash);
  330. +          }
  331.            if (colorIndex >= maxColors)
  332.            {
  333. !             printf ("Can not find color #%1d, use '%s' instead.\n", colorIndex,
  334.                     colorMenuItems[defaultColorIndex]);
  335.               colorIndex = defaultColorIndex;
  336. ***************
  337. *** 615,656 ****
  338.   void ChangeDomain ()
  339.   {
  340. -    char     domain_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  341.      register int    i;
  342.   
  343.      if (SelectDomain (domain_name) == INVALID) return;
  344.   
  345. !    if (strcmp (domain_name, "..") == 0)
  346. !    {
  347. !       if (*curDomainName == '\0')
  348. !          Msg ("Already at the top.  Domain not changed.");
  349. !       else
  350. !       {
  351. !          i = strlen (curDomainName) - 1;
  352. !          for ( ; i >= 0 && curDomainName[i] != '/'; i--) ;
  353. !          if (i >= 0)
  354. !          {
  355. !             curDomainName[i] = '\0';
  356. !             sprintf (s, "Current domain is %s.", curDomainName);
  357. !             Msg (s);
  358. !          }
  359. !          else
  360. !          {
  361. !             curDomainName[0] = '\0';
  362. !             Msg ("At the top of the domain hierarchy.");
  363. !          }
  364. !       }
  365. !    }
  366. !    else if (strcmp (domain_name, ".") == 0)
  367. !    {
  368. !       sprintf (s, "Current domain is %s.", curDomainName);
  369. !       Msg (s);
  370. !    }
  371.      else
  372. !    {
  373. !       if (*curDomainName != '\0') strcat (curDomainName, "/");
  374. !       strcat (curDomainName, domain_name);
  375. !       sprintf (s, "Current domain is %s.", curDomainName);
  376. !       Msg (s);
  377. !    }
  378.   }
  379.   
  380. --- 683,704 ----
  381.   void ChangeDomain ()
  382.   {
  383.      register int    i;
  384. +    char     domain_name[MAXPATHLENGTH], env_str[MAXPATHLENGTH];
  385. +    char     s[MAXSTRING], s1[MAXSTRING], * c_ptr;
  386.   
  387.      if (SelectDomain (domain_name) == INVALID) return;
  388.   
  389. !    sprintf (env_str, "TGIF_%s", domain_name);
  390. !    if ((c_ptr = getenv (env_str)) == NULL)
  391. !       ParseSymPath (".");
  392.      else
  393. !       ParseSymPath (c_ptr);
  394. !    UpdateSymInfo ();
  395. !    strcpy (curDomainName, domain_name);
  396. !    sprintf (s, "Current domain is '%s'.", curDomainName);
  397. !    sprintf (s1, "Symbol path set to '%s'.", curDomainPath);
  398. !    TwoLineMsg (s, s1);
  399.   }
  400.   
  401. ***************
  402. *** 659,674 ****
  403.      struct ObjRec    * obj_ptr, * saved_top_obj, * saved_bot_obj;
  404.      char         file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  405. -    char         full_name[MAXPATHLENGTH];
  406.      FILE            * fp;
  407.   
  408. !    if (SelectFileName ("obj", "Please Select A File To IMPORT ...",
  409. !          file_name) == INVALID) return;
  410.   
  411.      strcat (file_name, ".obj");
  412. -    strcpy (full_name, curDomainName);
  413. -    if (*curDomainName != '\0') strcat (full_name, "/");
  414. -    strcat (full_name, file_name);
  415.   
  416. !    if ((fp = fopen (full_name, "r")) == NULL)
  417.      {
  418.         sprintf (s, "Can not import '%s'.", file_name);
  419. --- 707,719 ----
  420.      struct ObjRec    * obj_ptr, * saved_top_obj, * saved_bot_obj;
  421.      char         file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  422.      FILE            * fp;
  423.   
  424. !    if (SelectFileName ("Please select a file to IMPORT ...", file_name)
  425. !          == INVALID)
  426. !       return;
  427.   
  428.      strcat (file_name, ".obj");
  429.   
  430. !    if ((fp = fopen (file_name, "r")) == NULL)
  431.      {
  432.         sprintf (s, "Can not import '%s'.", file_name);
  433. ***************
  434. *** 717,732 ****
  435.      struct ObjRec    * obj_ptr;
  436.      char         file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  437. !    char         full_name[MAXPATHLENGTH];
  438.      FILE            * fp;
  439.   
  440. !    if (SelectFileName ("obj", "Please Select A File To OPEN ...",
  441. !          file_name) == INVALID) return;
  442.   
  443.      strcat (file_name, ".obj");
  444. -    strcpy (full_name, curDomainName);
  445. -    if (*curDomainName != '\0') strcat (full_name, "/");
  446. -    strcat (full_name, file_name);
  447.   
  448. !    if ((fp = fopen (full_name, "r")) == NULL)
  449.      {
  450.         sprintf (s, "Can not open '%s'.", file_name);
  451. --- 762,775 ----
  452.      struct ObjRec    * obj_ptr;
  453.      char         file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  454. !    char         full_name[MAXPATHLENGTH], saved_cur_dir[MAXPATHLENGTH];
  455.      FILE            * fp;
  456.   
  457. !    strcpy (saved_cur_dir, curDir);
  458. !    if (SelectFileName ("Please select a file to OPEN ...",file_name) == INVALID)
  459. !       return;
  460.   
  461.      strcat (file_name, ".obj");
  462.   
  463. !    if ((fp = fopen (file_name, "r")) == NULL)
  464.      {
  465.         sprintf (s, "Can not open '%s'.", file_name);
  466. ***************
  467. *** 737,740 ****
  468. --- 780,784 ----
  469.      TieLooseEnds ();
  470.      CleanUpDrawingWindow ();
  471. +    SetFileModified (FALSE);
  472.      sprintf (s, "Loading '%s' ...", file_name);
  473.      Msg (s);
  474. ***************
  475. *** 758,765 ****
  476.   
  477.      fclose (fp);
  478. !    strcpy (curFileName, file_name);
  479.      curFileDefined = TRUE;
  480.   
  481. !    SetFileModified (FALSE);
  482.      sprintf (s, "Current file is '%s'.", file_name);
  483.      Msg (s);
  484. --- 802,812 ----
  485.   
  486.      fclose (fp);
  487. !    SetCurDir (file_name);
  488. !    *curSymDir = '\0';
  489.      curFileDefined = TRUE;
  490.   
  491. !    if (strcmp (saved_cur_dir, curDir) != 0 && DirInSymPath ("."))
  492. !       UpdateSymInfo ();
  493.      sprintf (s, "Current file is '%s'.", file_name);
  494.      Msg (s);
  495. ***************
  496. *** 780,783 ****
  497. --- 827,831 ----
  498.   
  499.      fprintf (FP, "gsave\n");
  500. +    fprintf (FP, "   0 setgray\n");
  501.      fprintf (FP, "   [4 4] 0 setdash\n");
  502.      fprintf (FP, "   newpath\n   %1d %1d moveto\n", ltx, lty);
  503. ***************
  504. *** 903,910 ****
  505.      {
  506.         if (PRTGIF)
  507. !          printf ("Can not create $s, print aborted.", tmp_file);
  508.         else
  509.         {
  510. !          sprintf (tmp_str, "Can not create %s, print aborted.", tmp_file);
  511.            Msg (tmp_str);
  512.         }
  513. --- 951,958 ----
  514.      {
  515.         if (PRTGIF)
  516. !          printf ("Can not create '%s', print aborted.", tmp_file);
  517.         else
  518.         {
  519. !          sprintf (tmp_str, "Can not create '%s', print aborted.", tmp_file);
  520.            Msg (tmp_str);
  521.         }
  522. ***************
  523. *** 912,916 ****
  524.      }
  525.   
  526. !    if (PRTGIF) printf ("Writing to %s ...\n", tmp_file);
  527.   
  528.      fprintf (fp, "%%!\n");
  529. --- 960,964 ----
  530.      }
  531.   
  532. !    if (PRTGIF) printf ("Writing to '%s' ...\n", tmp_file);
  533.   
  534.      fprintf (fp, "%%!\n");
  535. ***************
  536. *** 920,927 ****
  537.      {
  538.         if (PRTGIF)
  539. !          printf ("Can not find %s, print aborted.\n", ps_file);
  540.         else
  541.         {
  542. !          sprintf (message, "Can not find %s, print aborted.", ps_file);
  543.            Msg (message);
  544.         }
  545. --- 968,975 ----
  546.      {
  547.         if (PRTGIF)
  548. !          printf ("Can not find '%s', print aborted.\n", ps_file);
  549.         else
  550.         {
  551. !          sprintf (message, "Can not find '%s', print aborted.", ps_file);
  552.            Msg (message);
  553.         }
  554. ***************
  555. *** 1012,1018 ****
  556.               }
  557.   
  558. !             strcpy (ps_file, curDomainName);
  559. !             if (*curDomainName != '\0') strcat (ps_file, "/");
  560. !             strcat (ps_file, curFileName);
  561.               len = strlen (ps_file);
  562.               for (i = len-1; ps_file[i] != '.'; i--) ;
  563. --- 1060,1064 ----
  564.               }
  565.   
  566. !             sprintf (ps_file, "%s/%s", curDir, curFileName);
  567.               len = strlen (ps_file);
  568.               for (i = len-1; ps_file[i] != '.'; i--) ;
  569. *** font.c.orig    Wed Dec 12 14:34:53 1990
  570. --- font.c    Wed Dec 12 14:34:56 1990
  571. ***************
  572. *** 6,10 ****
  573.   #ifndef lint
  574.   static char RCSid[] =
  575. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.c,v 1.9 90/08/16 15:44:24 william Exp $";
  576.   #endif
  577.   
  578. --- 6,10 ----
  579.   #ifndef lint
  580.   static char RCSid[] =
  581. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.c,v 1.13 90/11/03 12:30:45 william Exp $";
  582.   #endif
  583.   
  584. ***************
  585. *** 25,35 ****
  586.   #include "text.e"
  587.   
  588. - #define COUR8R  24
  589. - #define COUR10R 25
  590. - #define COUR12R 26
  591. - #define COUR14R 27
  592. - #define COUR18R 28
  593. - #define COUR24R 29
  594.   #define FONTS_PER_DPI (((MAXFONTS-1)*MAXFONTSTYLES+1)*MAXFONTSIZES)
  595.   #define FONTTABLESIZE (MAXFONTDPIS*FONTS_PER_DPI)
  596. --- 25,28 ----
  597. ***************
  598. *** 37,40 ****
  599. --- 30,47 ----
  600.   /* #define FONTTABLESIZE (MAXFONTSIZES*MAXFONTSTYLES*MAXFONTS) */
  601.   
  602. + #define COUR8R_75  FontIndex(FONT_DPI_75,FONT_COU,0,STYLE_NR)
  603. + #define COUR10R_75 FontIndex(FONT_DPI_75,FONT_COU,1,STYLE_NR)
  604. + #define COUR12R_75 FontIndex(FONT_DPI_75,FONT_COU,2,STYLE_NR)
  605. + #define COUR14R_75 FontIndex(FONT_DPI_75,FONT_COU,3,STYLE_NR)
  606. + #define COUR18R_75 FontIndex(FONT_DPI_75,FONT_COU,4,STYLE_NR)
  607. + #define COUR24R_75 FontIndex(FONT_DPI_75,FONT_COU,5,STYLE_NR)
  608. + #define COUR11R_100 FontIndex(FONT_DPI_100,FONT_COU,0,STYLE_NR)
  609. + #define COUR14R_100 FontIndex(FONT_DPI_100,FONT_COU,1,STYLE_NR)
  610. + #define COUR17R_100 FontIndex(FONT_DPI_100,FONT_COU,2,STYLE_NR)
  611. + #define COUR20R_100 FontIndex(FONT_DPI_100,FONT_COU,3,STYLE_NR)
  612. + #define COUR25R_100 FontIndex(FONT_DPI_100,FONT_COU,4,STYLE_NR)
  613. + #define COUR34R_100 FontIndex(FONT_DPI_100,FONT_COU,5,STYLE_NR)
  614.   struct MyFontRec {
  615.      XFontStruct    * xfs;
  616. ***************
  617. *** 337,345 ****
  618.      register int    dpi_index, font_index, size_index, style_index;
  619.   {
  620. - /* if (font_index == FONT_SYM) */
  621. - /*    return (FIndex(font_index,size_index,0)); */
  622. - /* else */
  623. - /*    return (FIndex(font_index,size_index,style_index)); */
  624.      if (font_index == FONT_SYM)
  625.         return (size_index+MAXFONTSIZES*(MAXFONTSTYLES*font_index) +
  626. --- 344,347 ----
  627. ***************
  628. *** 352,359 ****
  629.   void SetCanvasFont ()
  630.   {
  631. !    register int    index;
  632.   
  633. !    canvasFontIndex = index = FontIndex (curFontDPI, curFont, curSize, curStyle);
  634.      if (!myFontInfo[index].valid)
  635.      {
  636. --- 354,360 ----
  637.   void SetCanvasFont ()
  638.   {
  639. !    register int    index, old_index;
  640.   
  641. !    index = FontIndex (curFontDPI, curFont, curSize, curStyle);
  642.      if (!myFontInfo[index].valid)
  643.      {
  644. ***************
  645. *** 361,365 ****
  646.               XLoadQueryFont (mainDisplay, fontNameStr[index])) == NULL)
  647.         {
  648. !          printf ("Can not open %s.  Abort.\n\n", fontNameStr[index]); exit (-1);
  649.         }
  650.         myFontInfo[index].valid = TRUE;
  651. --- 362,378 ----
  652.               XLoadQueryFont (mainDisplay, fontNameStr[index])) == NULL)
  653.         {
  654. !          old_index = index;
  655. !          curFontDPI = (curFontDPI==FONT_DPI_75) ? FONT_DPI_100 : FONT_DPI_75;
  656. !          index = FontIndex (curFontDPI, curFont, curSize, curStyle);
  657. !          if ((myFontInfo[index].xfs =
  658. !                XLoadQueryFont (mainDisplay, fontNameStr[index])) == NULL)
  659. !          {
  660. !             printf ("Can not open '%s' nor\n\t'%s'!  Tgif aborted!\n\n",
  661. !                   fontNameStr[old_index], fontNameStr[index]);
  662. !             exit (-1);
  663. !          }
  664. !          printf ("Warning:  can not open '%s' font,\n\tuse '%s' instead.\n",
  665. !                fontNameStr[old_index], fontNameStr[index]);
  666. !          SetFileModified (TRUE);
  667.         }
  668.         myFontInfo[index].valid = TRUE;
  669. ***************
  670. *** 366,369 ****
  671. --- 379,384 ----
  672.      }
  673.   
  674. +    canvasFontIndex = index;
  675.      canvasFontPtr = myFontInfo[index].xfs;
  676.      canvasFontAsc = canvasFontPtr->max_bounds.ascent;
  677. ***************
  678. *** 382,404 ****
  679.   {
  680.      register int    i;
  681.   
  682. -    pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100;
  683. -    sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100;
  684.      for (i = 0; i < FONTTABLESIZE; i++) myFontInfo[i].valid = FALSE;
  685.   
  686. !    if ((myFontInfo[COUR18R].xfs =
  687. !          XLoadQueryFont (mainDisplay, fontNameStr[COUR18R])) == NULL)
  688. !    { printf ("Can not open %s.  Abort.\n\n", fontNameStr[COUR18R]); exit (-1); }
  689.   
  690. !    myFontInfo[COUR18R].valid = TRUE;
  691.   
  692. !    if ((myFontInfo[COUR10R].xfs =
  693. !          XLoadQueryFont (mainDisplay, fontNameStr[COUR10R])) == NULL)
  694. !    { printf ("Can not open %s.  Abort.\n\n", fontNameStr[COUR10R]); exit (-1); }
  695.   
  696. !    myFontInfo[COUR10R].valid = TRUE;
  697.   
  698. !    rulerFontPtr = myFontInfo[COUR10R].xfs;
  699.      rulerFontWidth = rulerFontPtr->max_bounds.width;
  700.      rulerFontAsc = rulerFontPtr->max_bounds.ascent;
  701. --- 397,451 ----
  702.   {
  703.      register int    i;
  704. +    int        ruler_index, default_index;
  705. +    int        old_ruler_index, old_default_index;
  706.   
  707.      for (i = 0; i < FONTTABLESIZE; i++) myFontInfo[i].valid = FALSE;
  708.   
  709. !    curFont = FONT_COU;
  710. !    curStyle = STYLE_NR;
  711. !    curSize = 4;
  712. !    curFontDPI = FONT_DPI_75;
  713.   
  714. !    default_index = FontIndex(curFontDPI, curFont, curSize, curStyle);
  715. !    if ((myFontInfo[default_index].xfs =
  716. !          XLoadQueryFont (mainDisplay, fontNameStr[default_index])) == NULL)
  717. !    {
  718. !       old_default_index = default_index;
  719. !       curSize = 2;
  720. !       curFontDPI = FONT_DPI_100;
  721. !       default_index = FontIndex(curFontDPI, curFont, curSize, curStyle);
  722. !       if ((myFontInfo[default_index].xfs =
  723. !             XLoadQueryFont (mainDisplay, fontNameStr[default_index])) == NULL)
  724. !       {
  725. !          printf ("Can not open '%s' nor\n\t'%s'!  Tgif aborted!\n\n",
  726. !                fontNameStr[old_default_index], fontNameStr[default_index]);
  727. !          exit (-1);
  728. !       }
  729. !    }
  730. !    myFontInfo[default_index].valid = TRUE;
  731.   
  732. !    ruler_index = FontIndex(FONT_DPI_75, curFont, 1, curStyle);
  733. !    if ((myFontInfo[ruler_index].xfs =
  734. !          XLoadQueryFont (mainDisplay, fontNameStr[ruler_index])) == NULL)
  735. !    {
  736. !       old_ruler_index = ruler_index;
  737. !       ruler_index = FontIndex(FONT_DPI_100, curFont, 0, curStyle);
  738. !       if ((myFontInfo[ruler_index].xfs =
  739. !             XLoadQueryFont (mainDisplay, fontNameStr[ruler_index])) == NULL)
  740. !       {
  741. !          printf ("Can not open '%s' nor\n\t'%s'!  Tgif aborted!\n\n",
  742. !                fontNameStr[old_ruler_index], fontNameStr[ruler_index]);
  743. !          exit (-1);
  744. !       }
  745. !    }
  746. !    myFontInfo[ruler_index].valid = TRUE;
  747.   
  748. !    defaultFontPtr = myFontInfo[default_index].xfs;
  749. !    defaultFontWidth = defaultFontPtr->max_bounds.width;
  750. !    defaultFontAsc = defaultFontPtr->max_bounds.ascent;
  751. !    defaultFontDes = defaultFontPtr->max_bounds.descent;
  752. !    defaultFontHeight = defaultFontAsc + defaultFontDes;
  753.   
  754. !    rulerFontPtr = myFontInfo[ruler_index].xfs;
  755.      rulerFontWidth = rulerFontPtr->max_bounds.width;
  756.      rulerFontAsc = rulerFontPtr->max_bounds.ascent;
  757. ***************
  758. *** 406,414 ****
  759.      rulerFontHeight = rulerFontAsc + rulerFontDes;
  760.   
  761. !    defaultFontPtr = myFontInfo[COUR18R].xfs;
  762. !    defaultFontWidth = defaultFontPtr->max_bounds.width;
  763. !    defaultFontAsc = defaultFontPtr->max_bounds.ascent;
  764. !    defaultFontDes = defaultFontPtr->max_bounds.descent;
  765. !    defaultFontHeight = defaultFontAsc + defaultFontDes;
  766.   }
  767.   
  768. --- 453,458 ----
  769.      rulerFontHeight = rulerFontAsc + rulerFontDes;
  770.   
  771. !    pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100;
  772. !    sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100;
  773.   }
  774.   
  775. *** frontend.c.orig    Wed Dec 12 14:35:00 1990
  776. --- frontend.c    Wed Dec 12 14:35:01 1990
  777. ***************
  778. *** 0 ****
  779. --- 1,13 ----
  780. + /*
  781. +  * Author:    William Chia-Wei Cheng (william@cs.ucla.edu)
  782. +  *
  783. +  * Copyright (C) 1990, William Cheng.
  784. +  */
  785. + #ifndef lint
  786. + static char RCSid[] =
  787. +       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/frontend.c,v 1.1 90/08/28 09:56:33 william Exp $";
  788. + #endif
  789. + int    lastFile;
  790. + short    * pDrawFontAsc;
  791. + short    * pDrawFontDes;
  792. *** grid.c.orig    Wed Dec 12 14:35:07 1990
  793. --- grid.c    Wed Dec 12 14:35:09 1990
  794. ***************
  795. *** 6,10 ****
  796.   #ifndef lint
  797.   static char RCSid[] =
  798. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/grid.c,v 1.7 90/08/20 13:56:57 william Exp $";
  799.   #endif
  800.   
  801. --- 6,10 ----
  802.   #ifndef lint
  803.   static char RCSid[] =
  804. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/grid.c,v 1.8 90/11/01 08:42:51 william Exp $";
  805.   #endif
  806.   
  807. ***************
  808. *** 167,172 ****
  809.   #define LAYOUT_SLIDELAND 10
  810.   #define LAYOUT_SLIDEPORT 11
  811. ! #define LAYOUT_TO_LPR 12
  812. ! #define LAYOUT_TO_TEXFIG 13
  813.   
  814.   #define MAXLAYOUTMENUS 14
  815. --- 167,172 ----
  816.   #define LAYOUT_SLIDELAND 10
  817.   #define LAYOUT_SLIDEPORT 11
  818. ! #define LAYOUT_TOGGLE_WHERE_TO_PRINT 12
  819. ! #define LAYOUT_TOGGLE_COLOR_PS 13
  820.   
  821.   #define MAXLAYOUTMENUS 14
  822. ***************
  823. *** 186,197 ****
  824.      "SlidePort",
  825.      "Printer",
  826. !    "LaTeX-Figure"
  827.   };
  828.   #define MAX_LAYOUT_STR 13 /* longest string length in layoutMenuStr[] */
  829.   
  830. ! static char showGridStr[] = "ShowGrid  #G";
  831. ! static char hideGridStr[] = "HideGrid  #G";
  832. ! static char snapOnStr[]   = "SnapOn   ^#G";
  833. ! static char snapOffStr[]  = "SnapOff  ^#G";
  834.   
  835.   void IncGrid ()
  836. --- 186,201 ----
  837.      "SlidePort",
  838.      "Printer",
  839. !    "ColorPS"
  840.   };
  841.   #define MAX_LAYOUT_STR 13 /* longest string length in layoutMenuStr[] */
  842.   
  843. ! static char showGridStr[]         = "ShowGrid  #G";
  844. ! static char hideGridStr[]         = "HideGrid  #G";
  845. ! static char snapOnStr[]           = "SnapOn   ^#G";
  846. ! static char snapOffStr[]          = "SnapOff  ^#G";
  847. ! static char printerStr[]          = "Printer  ^#X";
  848. ! static char latexFigStr[]         = "LaTeXFig ^#X";
  849. ! static char bwPostScriptStr[]     = "BlkWhtPS ^#K";
  850. ! static char colorPostScriptStr[]  = "ColorPS  ^#K";
  851.   
  852.   void IncGrid ()
  853. ***************
  854. *** 237,240 ****
  855. --- 241,265 ----
  856.   }
  857.   
  858. + void ToggleColorPostScript ()
  859. + {
  860. +    colorDump = !colorDump;
  861. +    if (colorDump)
  862. +       Msg ("PostScript file will print in color.");
  863. +    else
  864. +       Msg ("PostScript file will print in black-and-white.");
  865. +    ShowWhereToPrint ();
  866. + }
  867. + void ToggleWhereToPrint ()
  868. + {
  869. +    whereToPrint = !whereToPrint;
  870. +    switch (whereToPrint)
  871. +    {
  872. +       case PRINTER: Msg ("Print device set to printer."); break;
  873. +       case LATEX_FIG: Msg ("Print device set to LaTeX-Figure file."); break;
  874. +    }
  875. +    ShowWhereToPrint ();
  876. + }
  877.   void ZoomIn ()
  878.   {
  879. ***************
  880. *** 454,457 ****
  881. --- 479,490 ----
  882.      else
  883.         strcpy (menu_strings[LAYOUT_SNAP], snapOnStr);
  884. +    if (whereToPrint == PRINTER)
  885. +       strcpy (menu_strings[LAYOUT_TOGGLE_WHERE_TO_PRINT], latexFigStr);
  886. +    else
  887. +       strcpy (menu_strings[LAYOUT_TOGGLE_WHERE_TO_PRINT], printerStr);
  888. +    if (colorDump)
  889. +       strcpy (menu_strings[LAYOUT_TOGGLE_COLOR_PS], bwPostScriptStr);
  890. +    else
  891. +       strcpy (menu_strings[LAYOUT_TOGGLE_COLOR_PS], colorPostScriptStr);
  892.   
  893.      DefaultColorArrays (MAXLAYOUTMENUS, &fore_colors, &valid);
  894. ***************
  895. *** 547,566 ****
  896.            }
  897.            break;
  898. !       case LAYOUT_TO_LPR:
  899. !          if (whereToPrint != PRINTER)
  900. !          {
  901. !             whereToPrint = PRINTER;
  902. !             ShowWhereToPrint ();
  903. !             Msg ("Print device set to printer.");
  904. !          }
  905. !          break;
  906. !       case LAYOUT_TO_TEXFIG:
  907. !          if (whereToPrint != LATEX_FIG)
  908. !          {
  909. !             whereToPrint = LATEX_FIG;
  910. !             ShowWhereToPrint ();
  911. !             Msg ("Print device set to LaTeX-Figure file.");
  912. !          }
  913. !          break;
  914.      }
  915.   }
  916. --- 580,585 ----
  917.            }
  918.            break;
  919. !       case LAYOUT_TOGGLE_WHERE_TO_PRINT: ToggleWhereToPrint (); break;
  920. !       case LAYOUT_TOGGLE_COLOR_PS: ToggleColorPostScript (); break;
  921.      }
  922.   }
  923. *** mainloop.c.orig    Wed Dec 12 14:35:17 1990
  924. --- mainloop.c    Wed Dec 12 14:35:19 1990
  925. ***************
  926. *** 6,10 ****
  927.   #ifndef lint
  928.   static char RCSid[] =
  929. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/mainloop.c,v 1.15 90/08/16 09:35:09 william Exp $";
  930.   #endif
  931.   
  932. --- 6,10 ----
  933.   #ifndef lint
  934.   static char RCSid[] =
  935. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/mainloop.c,v 1.22 90/11/03 12:42:48 william Exp $";
  936.   #endif
  937.   
  938. ***************
  939. *** 42,46 ****
  940.   char    initMsg1[80], initMsg2[80];
  941.   
  942. ! static quitDraw = TRUE;
  943.   
  944.   static
  945. --- 42,46 ----
  946.   char    initMsg1[80], initMsg2[80];
  947.   
  948. ! static int    quitDraw = TRUE;
  949.   
  950.   static
  951. ***************
  952. *** 51,58 ****
  953.      char    s[255];
  954.   
  955. !    strcpy (s, "xterm -bd red -e ");
  956. !    strcat (s, CmdName);
  957. !    strcat (s, " ");
  958. !    strcat (s, FileName);
  959.      pid = fork ();
  960.      if (pid == 0)
  961. --- 51,55 ----
  962.      char    s[255];
  963.   
  964. !    sprintf (s, "xterm -bd red -e %s %s", CmdName, FileName);
  965.      pid = fork ();
  966.      if (pid == 0)
  967. ***************
  968. *** 150,155 ****
  969.   {
  970.      XEvent        input, ev;
  971. !    char            * c_ptr, file_name[256], s[256];
  972. !    int            shorthand_rc, draw_rc;
  973.      struct ObjRec    * obj_ptr;
  974.      FILE            * fp;
  975. --- 147,153 ----
  976.   {
  977.      XEvent        input, ev;
  978. !    char            * c_ptr, file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  979. !    char            full_name[MAXPATHLENGTH];
  980. !    int            shorthand_rc, draw_rc, len;
  981.      struct ObjRec    * obj_ptr;
  982.      FILE            * fp;
  983. ***************
  984. *** 183,190 ****
  985.         if (FileName[0] != '\0')
  986.         {
  987. !          sprintf (file_name, "%s.obj", FileName);
  988.            if ((fp = fopen (file_name, "r")) == NULL)
  989.            {
  990. !             sprintf (s, "CAN NOT OPEN %s.", file_name);
  991.               Msg (s);
  992.            }
  993. --- 181,193 ----
  994.         if (FileName[0] != '\0')
  995.         {
  996. !          len = strlen (FileName);
  997. !          if (len >= 4 && strcmp (&FileName[len-4], ".obj") == 0)
  998. !             strcpy (file_name, FileName);
  999. !          else
  1000. !             sprintf (file_name, "%s.obj", FileName);
  1001.            if ((fp = fopen (file_name, "r")) == NULL)
  1002.            {
  1003. !             sprintf (s, "Can not open '%s'.", file_name);
  1004.               Msg (s);
  1005.            }
  1006. ***************
  1007. *** 199,203 ****
  1008.   
  1009.               fclose (fp);
  1010. !             strcpy (curFileName, file_name);
  1011.               curFileDefined = TRUE;
  1012.   
  1013. --- 202,213 ----
  1014.   
  1015.               fclose (fp);
  1016. !             if (*file_name == '/')
  1017. !                strcat (full_name, file_name);
  1018. !             else
  1019. !                sprintf (full_name, "%s/%s", curDir, file_name);
  1020. !             SetCurDir (full_name);
  1021. !             *curSymDir = '\0';
  1022.               curFileDefined = TRUE;
  1023.   
  1024. ***************
  1025. *** 207,210 ****
  1026. --- 217,221 ----
  1027.            }
  1028.         }
  1029. +       UpdateDirInfo ();
  1030.      }
  1031.      SaveDrawWinInfo ();
  1032. ***************
  1033. *** 544,551 ****
  1034.            MyFormat(attr_ptr->s);
  1035.            if (attr_ptr->nameshown)
  1036. !          {
  1037. !             strcpy (s, attr_ptr->name);
  1038. !             strcat (s, attr_ptr->s);
  1039. !          }
  1040.            else
  1041.               strcpy (s, attr_ptr->s);
  1042. --- 555,559 ----
  1043.            MyFormat(attr_ptr->s);
  1044.            if (attr_ptr->nameshown)
  1045. !             sprintf (s, "%s%s", attr_ptr->name, attr_ptr->s);
  1046.            else
  1047.               strcpy (s, attr_ptr->s);
  1048. *** menu.c.orig    Wed Dec 12 14:35:31 1990
  1049. --- menu.c    Wed Dec 12 14:35:33 1990
  1050. ***************
  1051. *** 6,10 ****
  1052.   #ifndef lint
  1053.   static char RCSid[] =
  1054. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/menu.c,v 1.12 90/08/15 16:00:27 william Exp $";
  1055.   #endif
  1056.   
  1057. --- 6,10 ----
  1058.   #ifndef lint
  1059.   static char RCSid[] =
  1060. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/menu.c,v 1.15 90/11/01 13:21:34 william Exp $";
  1061.   #endif
  1062.   
  1063. ***************
  1064. *** 42,46 ****
  1065.   
  1066.   static int    savedZoomScale = 0, savedDrawOrigX = 0, savedDrawOrigY = 0;
  1067. ! static int    savedDrawWinW = 0, savedDrawWinH = 0;
  1068.   
  1069.   static GC    textMenuGC;
  1070. --- 42,46 ----
  1071.   
  1072.   static int    savedZoomScale = 0, savedDrawOrigX = 0, savedDrawOrigY = 0;
  1073. ! static int    savedDrawWinW = 0, savedDrawWinH = 0, savedFileModified = FALSE;
  1074.   
  1075.   static GC    textMenuGC;
  1076. ***************
  1077. *** 485,493 ****
  1078.      if (curFileDefined)
  1079.      {
  1080. !       strcpy (file_name, curFileName);
  1081. !       strcpy (s, curDomainName);
  1082. !       if (*curDomainName != '\0') strcat (s, "/");
  1083. !       strcat (s, file_name);
  1084.      }
  1085.   
  1086.      if (fileModified) strcat (s, " [Modified]");
  1087. --- 485,495 ----
  1088.      if (curFileDefined)
  1089.      {
  1090. !       if (*curSymDir == '\0')
  1091. !          sprintf (s, "%s:%s/%s", curDomainName, curDir, curFileName);
  1092. !       else
  1093. !          sprintf (s, "%s:%s/%s", curDomainName, curSymDir, curFileName);
  1094.      }
  1095. +    else
  1096. +       sprintf (s, "%s:[Unnamed]", curDomainName);
  1097.   
  1098.      if (fileModified) strcat (s, " [Modified]");
  1099. ***************
  1100. *** 625,628 ****
  1101. --- 627,631 ----
  1102.      savedDrawWinW = drawWinW;
  1103.      savedDrawWinH = drawWinH;
  1104. +    savedFileModified = fileModified;
  1105.   }
  1106.   
  1107. ***************
  1108. *** 639,642 ****
  1109. --- 642,646 ----
  1110.      drawWinW = savedDrawWinW;
  1111.      drawWinH = savedDrawWinH;
  1112. +    fileModified = savedFileModified;
  1113.      UpdDrawWinBBox ();
  1114.      XMapWindow (mainDisplay, mainWindow);
  1115. *** move.c.orig    Wed Dec 12 14:35:40 1990
  1116. --- move.c    Wed Dec 12 14:35:42 1990
  1117. ***************
  1118. *** 7,11 ****
  1119.   #ifndef lint
  1120.   static char RCSid[] =
  1121. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/move.c,v 1.7 90/08/11 00:14:18 william Exp $";
  1122.   #endif
  1123.   #include <stdio.h>
  1124. --- 7,11 ----
  1125.   #ifndef lint
  1126.   static char RCSid[] =
  1127. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/move.c,v 1.9 90/10/31 11:38:53 william Exp $";
  1128.   #endif
  1129.   #include <stdio.h>
  1130. ***************
  1131. *** 207,211 ****
  1132.               case OBJ_BOX:
  1133.               case OBJ_TEXT:
  1134. !                SelBox (drawWindow, revDefaultGC, ltx+dx, lty+dy, rbx+dx, rby+dy);
  1135.                  break;
  1136.               case OBJ_OVAL:
  1137. --- 207,212 ----
  1138.               case OBJ_BOX:
  1139.               case OBJ_TEXT:
  1140. !                SelBox (drawWindow, revDefaultGC,
  1141. !                      ltx+dx, lty+dy, rbx+dx, rby+dy);
  1142.                  break;
  1143.               case OBJ_OVAL:
  1144. ---------------------------------> cut here <---------------------------------
  1145. -- 
  1146. Bill Cheng // UCLA Computer Science Department // (213) 206-7135
  1147. 3277 Boelter Hall // Los Angeles, California 90024 // USA
  1148. william@CS.UCLA.EDU      ...!{uunet|ucbvax}!cs.ucla.edu!william
  1149.  
  1150. --
  1151. Dan Heller
  1152. ------------------------------------------------
  1153. O'Reilly && Associates               Zyrcom Inc
  1154. Senior Writer                   President
  1155. argv@ora.com            argv@zipcode.com
  1156.